package com.ruge.test.springMVC.定时任务调度.quartz;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.util.Collection;
import java.util.Date;

/**
 * 爱丽丝、如歌  创建于 2018/6/22 15:26
 * 说明:  TODO
 */
public class HelloScheduler {
    public static void main(String[] args) throws SchedulerException {
        /**
         * 创建一个jobDetail 将该实例于helloJob绑定
         */
        JobDetail jobDetail = JobBuilder.newJob(HelloJob2.class).withIdentity("my job1", "group1").usingJobData("message", "hello Myjob1").usingJobData("floatJobValue", 3.14F).build();
        System.out.println(jobDetail.getKey().getName());
        System.out.println(jobDetail.getKey().getGroup());
        System.out.println(jobDetail.getJobClass().getName());
        /**
         * 创建一个trigger 实例 定义该job立即执行  并且每两秒钟执行一次
         * Quartz中的触发器 用来告诉调度程序作业什么时候触发
         * 即Trigger对象 用来触发执行Job
         *      触发器通用属性
         *          JobKey          job实例的标识    触发器被触发时,该指定的job实例会触发
         *          StartTime       触发器的时间表首次被触发的时间
         *          EndTime         触发器不再被触发的时间
         */
        Date date = new Date();
        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("my trigger", "group1").usingJobData("message", "hello myTrigger 1").usingJobData("DoubleTriggerValue", 20.2D).startAt(date).endAt(new Date(date.getTime()+5000)).withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
        /**
         * 创建Scheduler实例
         */
        SchedulerFactory factory = new StdSchedulerFactory();
        Scheduler scheduler = factory.getScheduler();
        scheduler.start();
        scheduler.scheduleJob(jobDetail, trigger);
    }
}
